#pragma once

#include<stdio.h>
#include<string.h>
#include<stdlib.h>//qsort，perror，动态内存开辟函数

#define MAX_NAME 20
#define MAX_SEX 10
#define MAX_TELE 20
#define MAX_ADDR 30
#define DEFAULT_SZ 3 //default 默认
#define INC_SZ 2 //sz增量
//类型的定义
typedef struct peoinfo
{
	char name[MAX_NAME];
	char sex[MAX_SEX];
	int age;
	char tele[MAX_TELE];
	char addr[MAX_ADDR];
}peoinfo;

////静态版本通讯录
//typedef struct contact
//{
//	peoinfo data[MAX];//存放添加进来的人的信息     
//	int sz;//记录的是当前通讯录中有效信息的个数
//}contact;

//动态版本通讯录
typedef struct contact
{
	peoinfo* data;//指向动态开辟的空间，存放添加进来的人的信息
	int sz;//记录的是当前通讯录中有效信息的个数
	int capacity;//记录当前通讯录的最大容量，方便增容
}contact;

//初始化通讯录函数
void init_contact(contact* p);

//是否需要增容函数
void check_capacity(contact* p);

//加载联系人函数
void load_contact(contact* p);

//增加联系人函数
void add_contact(contact* p);

//保存联系人函数
void save_contact(contact* p);

//销毁联系人函数
void destroy_contact(contact* p);

//打印联系人函数
void print_contact(const contact* p);

//删除联系人函数
void del_contact(contact* p);

//查找联系人函数
void find_contact(const contact* p);

//修改联系人函数
void modify_contact(contact* p);

//排序联系人函数
void sort_contact(contact* p);